# 移动平均滤波器实现，用于平滑传感器数据
# 该模块实现了基于环形缓冲区的移动平均滤波器，可有效去除传感器数据中的噪声
class AvgFilter:
    """优化后的移动平均滤波器类
    特点：
    - 真正的环形缓冲区实现
    - O(1)时间复杂度操作
    - 自动处理初始化阶段
    """
    def __init__(self, window_size):
        self.buffer = [0] * window_size  # 环形缓冲区
        self.index = 0                   # 当前写入位置
        self.sum = 0                     # 当前总和
        self.count = 0                   # 有效数据计数
        self.window_size = window_size   # 窗口大小

    def avg(self, new_data):
        # 更新总和：减去将被替换的值，加上新值
        if self.count == self.window_size:
            self.sum -= self.buffer[self.index]
        else:
            self.count += 1
            
        self.sum += new_data
        self.buffer[self.index] = new_data
        self.index = (self.index + 1) % self.window_size
        
        return self.sum / self.count  # 返回浮点平均值    

# 保留原有接口的兼容性（可选）
class avg_filiter(AvgFilter):
    def __init__(self, cache_data):
        super().__init__(len(cache_data)-3)  # 兼容旧参数格式